#!/usr/bin/python
# author dennis
# 2022年08月07日
import numpy as np

timesteps = 100  # 输入序列的时间步数
input_features = 32  # 输入特征空间的维数
output_features = 64  # 输出特征空间的维度
inputs = np.random.random((timesteps, input_features))  # 输入数据：随机噪声，仅作为示例

state_t = np.zeros((output_features,))  # 初始状态：全零向量

W = np.random.random((output_features, input_features))
U = np.random.random((output_features, output_features))  # 创建随机的权重举证
b = np.random.random((output_features,))

successive_outputs = []
for input_t in inputs:  # inputs_t是形状为（input_features,）的向量
    print(input_t)
    output_t = np.tanh(np.dot(W, input_t) + np.dot(U, state_t) + b)  # 由输入和当前状态（前一个输出）计算得到当前的输出

    successive_outputs.append(output_t)  # 将输出保存在一个列表中

    state_t = output_t  # 更新网络的状态，用于下一个时间步

final_output_sequence = np.stack(successive_outputs, axis=0)  # 最终输出一个形状为（timesteps,output_features）的二维张量
print(final_output_sequence)
